home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 1999 August / SGI Freeware 1999 August.iso / dist / samba.idb / usr / samba / src / source / testparm.c.z / testparm.c
Encoding:
C/C++ Source or Header  |  1998-10-28  |  3.4 KB  |  142 lines

  1. /* 
  2.    Unix SMB/Netbios implementation.
  3.    Version 1.9.
  4.    Test validity of smb.conf
  5.    Copyright (C) Karl Auer 1993, 1994-1998
  6.  
  7.    Extensively modified by Andrew Tridgell, 1995
  8.    
  9.    This program is free software; you can redistribute it and/or modify
  10.    it under the terms of the GNU General Public License as published by
  11.    the Free Software Foundation; either version 2 of the License, or
  12.    (at your option) any later version.
  13.    
  14.    This program is distributed in the hope that it will be useful,
  15.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  16.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17.    GNU General Public License for more details.
  18.    
  19.    You should have received a copy of the GNU General Public License
  20.    along with this program; if not, write to the Free Software
  21.    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  22. */
  23.  
  24. /*
  25.  * Testbed for loadparm.c/params.c
  26.  *
  27.  * This module simply loads a specified configuration file and
  28.  * if successful, dumps it's contents to stdout. Note that the
  29.  * operation is performed with DEBUGLEVEL at 3.
  30.  *
  31.  * Useful for a quick 'syntax check' of a configuration file.
  32.  *
  33.  */
  34.  
  35. #include "includes.h"
  36. #include "smb.h"
  37.  
  38. /* these live in util.c */
  39. extern FILE *dbf;
  40. extern int DEBUGLEVEL;
  41. extern pstring myhostname;
  42.  
  43. /***********************************************
  44.  Here we do a set of 'hard coded' checks for bad
  45.  configuration settings.
  46. ************************************************/
  47.  
  48. void do_global_checks(void)
  49. {
  50.   if(lp_security() > SEC_SHARE && lp_revalidate(-1))
  51.     printf("WARNING: the 'revalidate' parameter is ignored in all but \
  52. 'security=share' mode.\n");
  53.  
  54.   if( lp_wins_support() && *lp_wins_server() )
  55.     printf("ERROR: both 'wins support = true' and 'wins server = <server>' \
  56. cannot be set in the smb.conf file. nmbd will abort with this setting.\n");
  57. }
  58.  
  59.  int main(int argc, char *argv[])
  60. {
  61.   pstring configfile;
  62.   int s;
  63.  
  64.   TimeInit();
  65.  
  66.   setup_logging(argv[0],True);
  67.   
  68.   charset_initialise();
  69.  
  70.   if (argc < 2)
  71.     pstrcpy(configfile,CONFIGFILE);
  72.   else
  73.     pstrcpy(configfile,argv[1]);
  74.  
  75.   dbf = stdout;
  76.   DEBUGLEVEL = 2;
  77.  
  78.   printf("Load smb config files from %s\n",configfile);
  79.  
  80.   if(!get_myname(myhostname,NULL))
  81.   {
  82.     printf("Failed to get my hostname.\n");
  83.     return(1);
  84.   }
  85.  
  86.   if (!lp_load(configfile,False))
  87.     {
  88.       printf("Error loading services.\n");
  89.       return(1);
  90.     }
  91.  
  92.  
  93.   printf("Loaded services file OK.\n");
  94.  
  95.   /*
  96.    * Global settings checks.
  97.    */
  98.  
  99.   do_global_checks();
  100.  
  101.   for (s=0;s<1000;s++)
  102.     if (VALID_SNUM(s))
  103.       if (strlen(lp_servicename(s)) > 8) {
  104.     printf("WARNING: You have some share names that are longer than 8 chars\n");
  105.     printf("These may give errors while browsing or may not be accessible\nto some older clients\n");
  106.     break;
  107.       }
  108.  
  109.   if (argc < 4)
  110.     {
  111.       printf("Press enter to see a dump of your service definitions\n");
  112.       fflush(stdout);
  113.       getc(stdin);
  114.       lp_dump(stdout);      
  115.     }
  116.   
  117.   if (argc == 4)
  118.     {
  119.       char *cname = argv[2];
  120.       char *caddr = argv[3];
  121.       
  122.       /* this is totally ugly, a real `quick' hack */
  123.       for (s=0;s<1000;s++)
  124.     if (VALID_SNUM(s))
  125.       {         
  126.         if (allow_access(lp_hostsdeny(s),lp_hostsallow(s),cname,caddr))
  127.           {
  128.         printf("Allow connection from %s (%s) to %s\n",
  129.                cname,caddr,lp_servicename(s));
  130.           }
  131.         else
  132.           {
  133.         printf("Deny connection from %s (%s) to %s\n",
  134.                cname,caddr,lp_servicename(s));
  135.           }
  136.       }
  137.     }
  138.   return(0);
  139. }
  140.  
  141.  
  142.